#ifndef PLUGINMANAGERDEF_H
#define PLUGINMANAGERDEF_H

#include "BaseDataDef.h"

typedef HANDLE		(*FUNC_GETINTERFACEBANK)(const wchar_t* );
typedef struct tag_Ix_AppModule 
{
public:
	void	(*InitModule)(FUNC_GETINTERFACEBANK)	 ;
	void	(*RegisterModule)(void *pPluginManager) ;
	void	(*UnInitModule)()  ;
}AppModule;

typedef AppModule*  (*FUNC_GETREGISTERBANK)();


class  PluginManagerImp 
{
public:
	virtual bool		initPluginModule(HANDLE) = 0;
 	virtual bool		unLoadPlugin(bool all = false) = 0;
	virtual bool		unLoadPlugin(const wchar_t* filename) = 0;
	virtual	bool		loadPlugin(const wchar_t* filename) = 0;
 	virtual	HANDLE		getModuleInterface(const wchar_t* interfaceName)=0;
	virtual	HANDLE		getModuleFun(const wchar_t* dllName){return NULL;}
	virtual	void*		getAppModule(const wchar_t* dllname)=0;
};

#ifndef PLUGINMANAGER_LIB
#pragma  comment(lib,"PluginManager.lib")
#endif

#endif // DKPLUGINMANAGER_H
